home *** CD-ROM | disk | FTP | other *** search
File List | 1995-08-15 | 3.4 KB | 149 lines |
- ' tile2
- ' Programmed by Seymour Shlien in GFA Basic 3.5
- ' 624 Courtenay Avenue
- ' Ottawa, Ontario
- ' Canada
- ' Feb 21 1993
- rez%=XBIOS(4)
- IF rez%<>0
- ALERT 3," Please switch to | low resolution! ",1,"Oops",b%
- STOP
- ENDIF
- DEFMOUSE 0
- nx_grid%=24
- ny_grid%=24
- nx_space%=6
- ny_space%=6
- x_left%=10
- x_right%=x_left%+nx_grid%*nx_space%
- y_top%=48
- y_bot%=y_top%+ny_grid%*ny_space%
- col%=0
- DIM deskcolors%(16)
- @get_deskcolors
- @initialize_lut
- @instructions
- @color_bar
- @draw_grid
- col%=1
- REPEAT
- IF MOUSEK<>0
- IF MOUSEY>y_top% AND MOUSEX>x_left%
- ix%=((MOUSEX-x_left%) DIV nx_space%)
- iy%=((MOUSEY-y_top%) DIV ny_space%)
- COLOR (col%)
- IF ix%<nx_grid%
- IF iy%<ny_grid%
- PLOT ix%+x_right%+10,iy%+y_top%-10
- ENDIF
- ENDIF
- ix%=ix%*nx_space%+x_left%
- iy%=iy%*ny_space%+y_top%
- @put_tiles(ix%,iy%,col%)
- INC numpnts%
- ELSE IF MOUSEX<180 AND MOUSEY<24
- col%=MOUSEX/20+8*(MOUSEY DIV 16)
- ELSE IF MOUSEX<230 AND MOUSEY<20
- DEFFILL 0
- PBOX x_left%,y_top%,x_right%,y_bot%
- @draw_grid
- PAUSE 10
- ENDIF
- IF (numpnts% MOD 50)=0
- @make_lattice
- ENDIF
- ENDIF
- UNTIL ((MOUSEK<>0) AND (MOUSEX>238) AND (MOUSEY<20))
- @restore_deskcolors
- > PROCEDURE initialize_lut
- VSETCOLOR 0,14,14,14
- VSETCOLOR 1,0,0,0
- VSETCOLOR 2,14,0,0
- VSETCOLOR 3,0,12,0
- VSETCOLOR 4,0,0,14
- VSETCOLOR 5,10,10,14
- VSETCOLOR 6,10,10,0
- VSETCOLOR 7,10,0,10
- VSETCOLOR 8,0,10,10
- VSETCOLOR 9,14,14,0
- VSETCOLOR 10,14,0,14
- VSETCOLOR 11,0,14,14
- VSETCOLOR 12,8,8,8
- VSETCOLOR 13,10,10,10
- VSETCOLOR 14,14,10,10
- VSETCOLOR 15,10,14,10
- RETURN
- > PROCEDURE make_lattice
- LOCAL i%,j%
- GET x_right%+10,y_top%-10,x_right%+nx_grid%+9,y_top%+ny_grid%-10,cell$
- FOR i%=0 TO 4
- FOR j%=0 TO 5
- PUT x_right%+40+i%*nx_grid%,y_top%+j%*ny_grid%,cell$
- NEXT j%
- NEXT i%
- RETURN
- > PROCEDURE draw_grid
- DEFFILL 0
- PBOX 0,30,319,199
- DEFFILL col%
- PBOX x_right%+10,y_top%-10,x_right%+nx_grid%+10,y_top%+ny_grid%-10
- PBOX x_left%,y_top%,x_left%+nx_space%*nx_grid%,y_top%+ny_space%*ny_grid%
- COLOR 1
- BOX x_left%-1,y_top%-1,x_left%+nx_space%*nx_grid%+1,y_top%+ny_space%*ny_grid%+1
- BOX x_left%,y_top%,x_left%+nx_space%*nx_grid%,y_top%+ny_space%*ny_grid%
- BOX x_right%+39,y_top%-1,x_right%+40+nx_grid%*5,y_top%+6*ny_grid%+1
- numpnts%=0
- RETURN
- > PROCEDURE put_tiles(ix%,iy%,col%)
- DEFFILL col%
- IF ix%<x_right%
- IF iy%<y_bot%
- PBOX ix%,iy%,ix%+nx_space%-1,iy%+ny_space%-1
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE color_bar
- CLS
- FOR i%=0 TO 15
- DEFFILL i%
- PBOX (i% MOD 8)*20,8*(i% DIV 8)+8,((i% MOD 8)+1)*20,8*(i% DIV 8)+16
- NEXT i%
- FOR i%=0 TO 15
- BOX (i% MOD 8)*20,8*(i% DIV 8)+8,((i% MOD 8)+1)*20,8*(i% DIV 8)+16
- NEXT i%
- COLOR 1
- BOX 0,8,20,16
- DEFTEXT 1
- BOX 182,8,238,20
- TEXT 184,18,"CLEAR"
- BOX 238,8,280,20
- TEXT 240,18,"QUIT"
- DEFFILL 0
- PBOX 0,40,319,199
- DEFMOUSE 0
- RETURN
- > PROCEDURE get_deskcolors
- LOCAL i%
- FOR i%=0 TO 15
- deskcolors%(i%)=XBIOS(7,i%,-1)
- NEXT i%
- RETURN
- > PROCEDURE restore_deskcolors
- LOCAL i%
- FOR i%=0 TO 15
- SETCOLOR i%,deskcolors%(i%)
- NEXT i%
- RETURN
- > PROCEDURE instructions
- DEFTEXT 1
- CLS
- PRINT "Click on colour and"
- PRINT "draw in left square"
- PRINT "holding down the mouse"
- PRINT "button."
- PRINT
- PRINT "Click any mouse button to continue"
- REPEAT
- UNTIL MOUSEK<>0
- RETURN
-